package com.eduagent.xwqeduagent.api.characterRecognition.UniversalFileRecognition;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * 通用OCR识别结果类
 */
@Data
public class UniversalFileRecognitionResult {
    
    /**
     * 文档内容
     */
    private String content;
    
    /**
     * 页面内容列表
     */
    private List<PageContent> pages;
    
    /**
     * 页面内容类
     */
    @Data
    public static class PageContent {
        /**
         * 页码，从1开始
         */
        private Integer pageNum;
        
        /**
         * 页面宽度
         */
        private Integer width;
        
        /**
         * 页面高度
         */
        private Integer height;
        
        /**
         * 角度
         */
        private Integer angle;
        
        /**
         * 行内容列表
         */
        private List<LineContent> lines;
        
        /**
         * 行内容类
         */
        @Data
        public static class LineContent {
            /**
             * 行文本内容
             */
            private String text;
            
            /**
             * 行置信度
             */
            private Float confidence;
            
            /**
             * 行左上角X坐标
             */
            private Integer x;
            
            /**
             * 行左上角Y坐标
             */
            private Integer y;
            
            /**
             * 行宽度
             */
            private Integer width;
            
            /**
             * 行高度
             */
            private Integer height;
            
            /**
             * 字符单元列表
             */
            @JSONField(name = "char")
            private List<CharUnit> chars;
            
            /**
             * 字符单元类
             */
            @Data
            public static class CharUnit {
                /**
                 * 字符内容
                 */
                private String text;
                
                /**
                 * 字符置信度
                 */
                private Float confidence;
                
                /**
                 * 字符左上角X坐标
                 */
                private Integer x;
                
                /**
                 * 字符左上角Y坐标
                 */
                private Integer y;
                
                /**
                 * 字符宽度
                 */
                private Integer width;
                
                /**
                 * 字符高度
                 */
                private Integer height;
            }
        }
    }
    
    /**
     * 获取纯文本内容（合并所有行文本）
     * 
     * @return 纯文本内容
     */
    public String getPlainText() {
        StringBuilder sb = new StringBuilder();
        if (pages != null) {
            for (PageContent page : pages) {
                if (page.getLines() != null) {
                    for (PageContent.LineContent line : page.getLines()) {
                        sb.append(line.getText()).append("\n");
                    }
                }
                sb.append("\n");
            }
        }
        return sb.toString().trim();
    }
} 